package controllers;

import java.sql.SQLException;
import java.util.List;

import models.Fornecedor;
import models.Usuario;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import service.FornecedorDAO;
import service.UsuarioDAO;
import exceptions.BusinessException;
import views.html.*;

public class UsuarioApplication extends Controller {

	//CONSTANTES COM O NOME DO CAMPO NA VIEW
	public static final Form<Usuario> usuarioForm = Form.form(Usuario.class);

	public static Result index() {
		UsuarioDAO dao = new UsuarioDAO();
		try{
			List<Usuario> usuarios = dao.buscarTodosUsuarios();
			return ok(views.html.usuario.render(usuarios));
		}catch (Exception e) {
			flash("erro", play.i18n.Messages.get("global.erro"));
			return ok(views.html.principal.render(Form
					.form(Usuario.class)));
		}
	}

    public static Result usuarioCadastro() {
		return ok(views.html.usuarioCadastro.render(usuarioForm));
	}
	
	
	public static Result cadastrar() {
		Form<Usuario> request = usuarioForm.bindFromRequest();
		Usuario usuario = request.get();

		if(usuario.senha!=null && usuario.confirmacaoSenha!=null && !usuario.senha.equals(usuario.confirmacaoSenha)){
			flash("erro", "Senhas não conferem");
			return ok(views.html.usuarioCadastro.render(usuarioForm));
		}
		
		UsuarioDAO dao = new UsuarioDAO();
		
		try {
				
			dao.cadastrarUsuario(usuario);
			
			flash("sucesso", "Usuário cadastrado com sucesso");
			return index();
		} catch (SQLException e) {
			flash("erro", play.i18n.Messages.get("global.erro"));
			return index();
		} catch (BusinessException bex) {
			flash("erro", "Nome desse usuário já foi cadastrado anteriormente");
			return ok(views.html.usuarioCadastro.render(usuarioForm));
		} 
	}
}
